iT邦幫忙

2023 iThome 鐵人賽

DAY 3
1
自我挑戰組

一個月的後端學習之旅系列 第 3

【DAY3】變數與賦值

  • 分享至 

  • xImage
  •  

賦值assignment

賦值就是賦予一個值,程式中的=與數學中使用的等號概念不同,在程式裡=就是把等號右邊的數據放到等號左邊。

語法糖 syntax sugar,為了更便捷快速的打出程式碼,Java Script支援將 x = x + 1 (正常寫法)更改為 x += 1(語法糖)。

變數variable

變數是一個可以存儲值的容器,變數內部的值可以不斷改變,相反的,有固定數值稱為常數,像是π、e等等。

要創造一個變數之前,必須先宣告變數。

宣告declare

為什麼要宣告變數?

如果有宣告變數,程式碼多時才不易出錯,也比較不會跟 global object 混淆。

接下來是三種宣告方式:

  • 若變數的值會變動,則用let來宣告變數

  • 若變數的值不會變動,則用常數const (constants)來宣告變數

  • var宣告變數,較不建議使用

不建議使用理由

  1. Function Scope - 表示該變數在整個函式內都是可見的,可能會導致變數在不應該被訪問的區域被訪問到
function example() {
  if (true) {
    var x = 10;
  }
  console.log(x); // -> 10,即使 x 在 if 區塊內宣告
}
  1. Hoisting - 宣告的變數會被提升到他所在的頂部,這表示可以在變數宣告之前就訪問它,只是他的值會是 undefined
console.log(y); // -> undefined
var y = 20;
  1. 重複宣告 - var 可以重複宣告相同的變數,這可能會導致錯誤或不容易追蹤的行為
var z = 30;
var z = 40; // -> z 會被重新宣告
  1. 全域變數問題 - var將成為全域變數,這可能會導致變數名稱衝突或不易追蹤的行為
function example() {
  var localVar = 50;
}

console.log(localVar); // 這裡會出錯誤,因為 localVar 是在函式內宣告
  1. 無法防止重新賦值 - var 可以在同一範疇內重新賦值,這可能會導致程式邏輯上的混淆或錯誤
var a = 60;
a = 70; // a 的值被重新賦值為 70

特別注意

  • const宣告的變數,一定需要馬上賦予初始值 initializer
const PI = 3.14; // 在這裡給予了初始值 3.14

const name; // 錯誤,因為未給予初始值
  • const不能做重複賦值 reassignment is not allowed
//情況一
const PI = 3.14; // 在這裡給予了初始值 3.14
PI = 4.0; // 錯誤,因為無法重新賦值 const 變數

//情況二
const age = 30;
age = 31; // 錯誤,因為無法重新賦值 const 變數
  • const, let宣告過的變數,都不能重複宣告 redeclaration is not allowed

let

let x = 10;
let x = 20; // 錯誤,因為 x 已經被宣告過了

const

const y = 30;
const y = 40; // 錯誤,因為 y 已經被宣告過了
  • let不需要,宣告了變數,但還沒有賦值,則變數的值是未定義 undefined
let x; // 先宣告變數 x,但沒有給它賦值
console.log(x); // -> undefined,因為 x 的值尚未被賦值

x = 10; // 現在給 x 賦值為 10
console.log(x); // -> 10,因為 x 的值已經被賦值

整理

重複宣告 redeclaration 重複賦值 reassignment 初始值 initializer
let X V X
const X X V

以上就是今天的變數與賦值,下一篇會來學習數字運算、string。


上一篇
【DAY2】 JS簡介、基本規則
下一篇
【DAY4】數字運算、method
系列文
一個月的後端學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言